package Controller;

/**
 * A class encompassing all waypoints, aswell as a ASCII art map of the crossing
 * It contains an array of Lanes, each lane containing 4 waypoints (2D points in the form of size 2 integer arrays)
 * @author imahilus
 */
public class SimulatorWaypoints
{
    public static final String breakline   = ""+((char)10);
    public static final int    lineWidth   = 87;
    public static final String crossingMap =
"XXXXXXXXXXXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXX|  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXX|  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXX|  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXX|  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXX|  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXX|  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXX|  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXX|  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXX|  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXX|  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"---------------------+ O|| <|| O|| <|| V|| >||  +------------+ O+---------------------"+breakline+
"                     O                                          O                     "+breakline+
"---------------------+                                          ----------------------"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|                                          ^                     "+breakline+
"XXXXXXXXXXXXXXXXXXXXX|                                          ----------------------"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|                                          O                     "+breakline+
"XXXXXXXXXXXXXXXXXXXXX|                                          ----------------------"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|                                          ^                     "+breakline+
"---------------------+                                          ----------------------"+breakline+
"                                                                <                     "+breakline+
"----------------------                                          ----------------------"+breakline+
"                     ^                                          V                     "+breakline+
"----------------------                                          ----------------------"+breakline+
"                     >                                                                "+breakline+
"----------------------                                          +---------------------"+breakline+
"                     V                                          |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"----------------------                                          |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"                     O                                          |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"----------------------                                          |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"                     V                                          |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"----------------------                                          +---------------------"+breakline+
"                     O                                          O                     "+breakline+
"---------------------+ O+------------+  || <|| ^|| >|| O|| >|| O+---------------------"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  |XXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  |XXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  |XXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  |XXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  |XXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  |XXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  |XXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  |XXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  |XXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXXXXXXXXXXX"+breakline+
"XXXXXXXXXXXXXXXXXXXXX|  |XXXXXXXXXXXX|  ||  ||  ||  ||  ||  ||  |XXXXXXXXXXXXXXXXXXXXX";


    
    public static SimulatorLane[] lanes = {
//bottom                  spawn    gate     turn     despawn  traffic light
        new SimulatorLane(22, 42,  22, 32,  22, 19,  22, 11,  23, 32), //top
        new SimulatorLane(42, 42,  42, 32,  42, 19,   0, 19,  43, 32), //left
        new SimulatorLane(46, 42,  46, 32,  46, 19,  40,  0,  47, 32), //top
        new SimulatorLane(50, 42,  50, 32,  50, 23,  84, 23,  51, 32), //right
        new SimulatorLane(54, 42,  54, 32,  54, 19,   0, 19,  55, 32), //left
        new SimulatorLane(58, 42,  58, 32,  58, 23,  84, 23,  59, 32), //right
        new SimulatorLane(62, 42,  62, 32,  62, 19,  62, 11,  63, 32), //top
//right
        new SimulatorLane(84, 31,  64, 31,  38, 31,  11, 31,  64, 31), //left
        new SimulatorLane(84, 21,  64, 21,  38, 21,  38, 42,  64, 21), //bottom
        new SimulatorLane(84, 19,  64, 19,  38, 19,   0, 17,  64, 19), //left
        new SimulatorLane(84, 17,  64, 17,  46, 17,  46,  0,  64, 17), //top
        new SimulatorLane(84, 15,  64, 15,  38, 15,  38, 42,  64, 15), //bottom
        new SimulatorLane(84, 13,  64, 14,  46, 13,  46,  0,  64, 13), //top
        new SimulatorLane(84, 11,  64, 11,  38, 11,  11, 11,  64, 11), //left
//top
        new SimulatorLane(62,  0,  62, 10,  62, 23,  62, 31,  63, 10), //bottom
        new SimulatorLane(42,  0,  42, 10,  42, 23,  84, 23,  43, 10), //right
        new SimulatorLane(38,  0,  38, 10,  38, 23,  32, 42,  39, 10), //bottom
        new SimulatorLane(34,  0,  34, 10,  34, 19,   0, 19,  35, 10), //left
        new SimulatorLane(30,  0,  30, 10,  30, 23,  84, 23,  31, 10), //right
        new SimulatorLane(26,  0,  26, 10,  26, 19,   0, 19,  27, 10), //left
        new SimulatorLane(22,  0,  22, 10,  22, 19,  22, 31,  23, 10), //bottom
//left
        new SimulatorLane( 0, 11,  20, 11,  46, 11,  62, 11,  21, 11), //right
        new SimulatorLane( 0, 21,  20, 21,  46, 21,  46,  0,  21, 21), //top
        new SimulatorLane( 0, 23,  20, 23,  46, 23,  84, 23,  21, 23), //right
        new SimulatorLane( 0, 25,  20, 25,  38, 25,  38, 42,  21, 25), //bottom
        new SimulatorLane( 0, 27,  20, 27,  46, 27,  46,  0,  21, 27), //top
        new SimulatorLane( 0, 29,  20, 29,  38, 29,  38, 42,  21, 29), //bottom
        new SimulatorLane( 0, 31,  20, 31,  46, 31,  62, 31,  21, 31)  //right
    };
}
